package shm.capaDatos.administradores;

import java.util.List;

import javax.ejb.Local;

import shm.capaDatos.vo.CategoriaStakeholderVO;
import shm.capaDatos.vo.CiudadVO;
import shm.capaDatos.vo.CompromisoVO;
import shm.capaDatos.vo.ConocimientoProcesosNegocioVO;
import shm.capaDatos.vo.DisposicionVO;
import shm.capaDatos.vo.EntendimientoRequerimientosVO;
import shm.capaDatos.vo.EstadoStakeholderVO;
import shm.capaDatos.vo.ImpactoProyectoVO;
import shm.capaDatos.vo.InfluenciaVO;
import shm.capaDatos.vo.PaisVO;
import shm.capaDatos.vo.PersonaVO;
import shm.capaDatos.vo.PoderVO;
import shm.capaDatos.vo.PreocupacionVO;
import shm.capaDatos.vo.ProvinciaVO;
import shm.capaDatos.vo.ProximidadVO;
import shm.capaDatos.vo.ProyectoVO;
import shm.capaDatos.vo.ReceptividadVO;
import shm.capaDatos.vo.StakeholderVO;
import shm.capaDatos.vo.TipoRelacionVO;
import shm.capaDatos.vo.TipoTelefonoVO;
import shm.capaDatos.vo.UsuarioVO;
import shm.excepciones.BuscarEntidadException;
import shm.excepciones.EliminarEntidadException;
import shm.excepciones.EntidadesHuerfanasException;
import shm.excepciones.GuardarEntidadException;

@Local
public interface AdministradorStakeholders {
	public StakeholderVO guardar(StakeholderVO stakeholder, UsuarioVO usuarioLogueado) throws GuardarEntidadException;
	public List<StakeholderVO> buscarListaPorProyecto(ProyectoVO proyecto, CategoriaStakeholderVO categoriaStakeholder);
	public List<StakeholderVO> buscarHistorial(StakeholderVO stakeholder, UsuarioVO usuarioLogueado) throws BuscarEntidadException;
	public StakeholderVO buscarMasReciente(StakeholderVO stakeholder, UsuarioVO usuarioLogueado) throws BuscarEntidadException;
	public void eliminar(StakeholderVO stakeholder, UsuarioVO usuarioLogueado) throws EliminarEntidadException, EntidadesHuerfanasException;
	public List<CompromisoVO> obtenerCompromisos();
	public List<ConocimientoProcesosNegocioVO> obtenerConocimientosProcesosNegocio();
	public List<DisposicionVO> obtenerDisposiciones();
	public List<InfluenciaVO> obtenerInfluencias();
	public List<PreocupacionVO> obtenerPreocupaciones();
	public List<PoderVO> obtenerPoderes();
	public List<ProximidadVO> obtenerProximidades();
	public List<ReceptividadVO> obtenerReceptividades();
	public List<TipoRelacionVO> obtenerTiposRelaciones();
	public List<EntendimientoRequerimientosVO> obtenerEntendimientosRequerimientos();
	public List<EstadoStakeholderVO> obtenerEstadosStakeholders();
	public List<ImpactoProyectoVO> obtenerImpactosProyecto();
	public List<CiudadVO> obtenerCiudades(ProvinciaVO provincia);
	public CiudadVO obtenerCiudad(CiudadVO ciudad);
	public List<ProvinciaVO> obtenerProvincias(PaisVO pais);
	public ProvinciaVO obtenerProvincia(ProvinciaVO provincia);
	public List<PaisVO> obtenerPaises();
	public PaisVO obtenerPais(PaisVO pais);
	public List<TipoTelefonoVO> obtenerTiposTelefono();
	public TipoTelefonoVO obtenerTipoTelefono(TipoTelefonoVO tipoTelefono);
	public EstadoStakeholderVO obtenerEstadoStakeholder(EstadoStakeholderVO estado);
	public ConocimientoProcesosNegocioVO obtenerConocimientoProcesosNegocio (ConocimientoProcesosNegocioVO conocimientoProcesosNegocio);
	public ImpactoProyectoVO obtenerImpactoProyecto(ImpactoProyectoVO impactoProyecto);
	public PoderVO obtenerPoder(PoderVO poder);
	public PreocupacionVO obtenerPreocupacion(PreocupacionVO preocupacion);
	public CompromisoVO obtenerCompromiso(CompromisoVO compromiso);
	public DisposicionVO obtenerDisposicion(DisposicionVO disposicion);
	public InfluenciaVO obtenerInfluencia(InfluenciaVO influencia);
	public ProximidadVO obtenerProximidad(ProximidadVO proximidad);
	public ReceptividadVO obtenerReceptividad(ReceptividadVO receptividad);
	public EntendimientoRequerimientosVO obtenerEntendimientoRequerimientos(EntendimientoRequerimientosVO entendimientoRequerimientos);
	public void actualizarStakeholdersAsociados(PersonaVO personaA, PersonaVO personaN,StakeholderVO stakeholderEnModificacion, UsuarioVO usuarioLogueado) throws GuardarEntidadException;
	
}
